require "opal-mc"
require "gps"
class BlContainer < ActiveRecord::Base
  belongs_to :bl
  has_many :bl_container_histories
  extend Opal::Enum
  attr_enum :status, ContainerStatusEnum

  # 判断该提单箱是否是可跟踪的状态：出场，集港
  def can_track?
    case self.status_enum.symbol
      when :out_cy, :centralize_on_port
        flag = true
      else
        flag = false
    end
    flag
  end

  #集装箱的当前位置
  #首先判读状态， 如果集装箱状态为 入场，运抵场站，入货, 查验，放行，则返回场站的位置，车号为空字符串
  # 如果集装箱的状态为 到港，则返回港口的位置，车号为空字符串
  # 如果集装箱的状态为 出场，运抵客户，集港，派车，则返回集装箱所在车的位置, 位置从缓存中取得
  # 否则，不做任何操作, 返回空
  def location
    ctn_location = Gps.new
    bl = self.bl
    case self.status_enum.symbol
      when :in_cy, :arrive_cy, :check, :release, :into_cargo
        ctn_location.update({:vehicle_no => "", :lng=>bl.cy.longitude, :lat=>bl.cy.latitude, :bl_no=>bl.bl_no})
      when :export_arrive_port
        ctn_location.update({:vehicle_no => "", :lng=>bl.port.longitude, :lat=>bl.port.latitude, :bl_no=>bl.bl_no})
      when :out_cy, :deliver_to_client, :send_car, :centralize_on_port
        # 从memcache中获取车辆的当前位置
        begin
          mc = Opal::Mc::Mc.new("VEHICLE_MC")
          location = mc.get(self.vehicle_no)
        rescue Exception => e
          logger.error(e.class, e.message)
        end
        ctn_location = location if location
        logger.info "get location from mc, data is : #{ctn_location.inspect}"
        ctn_location.update({:vehicle_no => self.vehicle_no, :bl_no=>bl.bl_no})
    end
    ctn_location
  end
end
